package sort;

import java.text.CollationKey;
import java.text.Collator;
import java.util.Comparator;
import java.util.function.Function;
import java.util.function.ToDoubleFunction;
import java.util.function.ToIntFunction;
import java.util.function.ToLongFunction;

//Comparator<Cat>位于java.util包,需要导包
/*
在要比较的类的外部实现该接口,调用sort方法时,要指定Comparator的实现类
 */
public class NameComparator implements Comparator<Cat> {
    //该方法返回值:
    /*
    o1大于o2返回正整数
    o1等于o2返回0
    o1小于o2返回负整数
     */
    @Override
    public int compare(Cat o1, Cat o2) {
        Collator collatorChina = Collator.getInstance(java.util.Locale.CHINA);// 用于将中文按拼音排序
        //按名字升序排序
        String name1=o1.getName();
        String name2=o2.getName();
        /*
        o1大于o2返回正整数
        o1等于o2返回0
        o1小于o2返回负整数
        */
        int n=collatorChina.getCollationKey(name1).compareTo(collatorChina.getCollationKey(name2));
        return n;
    }
    /*
    此接口强行对实现它的每个类的对象进行整体排序
    这种排序被称为类的自然排序,类的compareTo方法被称之为它的自然比较方法
    int compareTo(T o)方法
    该对象小于/等于/或大于指定对象,则分别返回负整数/零或正整数
     */
}
